﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaDTO;
using MySql.Data.MySqlClient;

namespace CapaConexion
{
    public class DAORepartidor
    {
        Error error = new Error();

        public Error insertarRepartidor(Repartidor nuevo)
        {
            String cadena = "Server=localhost;User id=root;Database=pizzeria;";
            MySqlConnection Conexion = new MySqlConnection(cadena);
            MySqlCommand command = Conexion.CreateCommand();
            command.CommandText = "INSERT INTO repartidor VALUES(" + nuevo.Id_repartidor + "," + "'" + nuevo.Nombre + "'" + "," + "'" + nuevo.Id_vehiculo + "'" + "," + "'" + nuevo.Email+"');";
            try
            {
                Conexion.Open();
                command.ExecuteNonQuery();
            }
            /*Se hace un catch a MySqlException para verificar si hay algún error con la sentencia SQL realizada*/
            catch (MySqlException mySqlEx)
            {
                /*Como sabemos que el código de error 1062 significa que "la llave primaria está duplicada al insertar"
                 controlamos ese error ingresando una descripción del error
                 */
                if (mySqlEx.Number == 1062)
                {
                    error.CodError = mySqlEx.Number;
                    error.DescError = "El id de repartidor ingresado ya se encuentra en la base de datos";

                    if (nuevo.Id_repartidor >= 100) { // Esto evita demasiados nivelesde recursión
                        return error;
                    }
                    nuevo.Id_repartidor = nuevo.Id_repartidor + 1;
                    insertarRepartidor(nuevo);                    
                }
                /*Si existe otro error enviamos su descripción y su código para mostrar en pantalla y saber cuál es el error*/
                error.CodError = mySqlEx.Number;
                error.DescError = "Error: " + mySqlEx.Message;
                return error;
            }
            /* Con Exception controlamos cualquier otra excepción que pueda ocurrir */
            catch (Exception ex)
            {
                error.DescError = "Error: " + ex.Message;
                return error;
            }
            /*Si no hay excepciones enviamos un código de error 0 que significa que no hay errores*/
            error.CodError = 0;
            error.DescError = "No hay errores";
            return error;
        }



    }
}
